﻿/*
 * XDevelopHelper
 *  @Author: XTST
 *  @Git: https://gitee.com/XTST/XUnityDevelopHelper
 *  Copyright © 2013-2018 Xiaotian Jin. All rights reserved.
 * */

using System;

namespace XDevelopHelper.FSM
{
    public abstract class FSMBase<T> where T : class
    {
        public readonly string FSMName;

        #region Constructor

        public FSMBase() : this(String.Empty)
        {

        }

        public FSMBase(string name)
        {
            FSMName = name ?? String.Empty;
        }

        #endregion

        public abstract bool IsRunning { get; }

        public abstract FSMState<T> CurrentFSMState { get; }

        internal abstract void Update(float elapseSeconds, float realElapseSeconds);
    }
}
